package com.frejoys.service;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.frejoys.common.dto.admin.*;
import com.frejoys.common.dto.common.IdDto;
import com.frejoys.common.vo.admin.AdminStoreActivityInfoVo;
import com.frejoys.common.vo.admin.AdminStoreActivityPageVo;
import com.frejoys.dao.entity.StoreActivity;
import com.frejoys.dao.entity.StoreActivityQueue;

import java.util.List;

public interface StoreActivityService extends IService<StoreActivity> {

    default StoreActivity getOnly(QueryWrapper<StoreActivity> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    default StoreActivity getOnly(LambdaQueryWrapper<StoreActivity> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    /**
     * 获取有效的活动
     * @param page
     * @param size
     * @return
     */
    List<StoreActivity> getTaskValidActivity(Integer page, Integer size, Integer type);


    List<StoreActivity> listInfo(StoreActivityListDto dto);


    /**
     * 获取信息
     * @param id
     * @return
     */
    StoreActivity getInfo(Integer id);


    boolean addInfo(StoreActivityAddDto dto);
    boolean upInfo(StoreActivityUpDto dto);


    boolean delInfo(Integer id);


    List<StoreActivity> getList(LambdaQueryWrapper<StoreActivity> wrapper);

    /**
     * 后台查询店铺活动
     */
    IPage<AdminStoreActivityPageVo> pageList(StoreIdAndNameDto dto);

    /**
     * 根据店铺活动id获取店铺活动详情
     */
    AdminStoreActivityInfoVo getInfo(IdDto dto);


    //编辑店铺活动上下架状态
    boolean upStoreActivityShelves(UpShelvesDto dto);

    //管理员编辑活动
    boolean upStoreActivity(StoreActivityUpDto dto);
}
